from django.db import models
from registration.forms import User

from jobs.models import DEGREE_TYPE
# Create your models here.
# 第一轮面试结果
FIRST_INTERVIEW_RESULT_TYPE = ((u'建议复试', u'建议复试'), (u'待定', u'待定'), (u'放弃', u'放弃'))

# 复试面试建议
INTERVIEW_RESULT_TYPE = ((u'建议录用', u'建议录用'), (u'待定', u'待定'), (u'放弃', u'放弃'))


# HR终面结论
HR_SCORE_TYPE = (('S', 'S'), ('A', 'A'), ('B', 'B'), ('C', 'C'))
class Candidate(models.Model):
    # 1. 开始编写我们的基础表信息
    # 1.1应聘着的基础信息
    userid = models.IntegerField(unique=True,blank=True,null=True,verbose_name=u"应聘者的ID") # unique唯一
    username = models.CharField(max_length=135,verbose_name=u"姓名")
    city = models.CharField(max_length=135,verbose_name=u"城市")
    phone = models.CharField(max_length=135,verbose_name=u"手机号")
    email = models.EmailField(max_length=135,blank=True,verbose_name="邮箱")
    apply_position = models.CharField(max_length=135,blank=True,verbose_name=u"应聘职位")
    born_address = models.CharField(max_length=135,blank=True,verbose_name=u"生源地")
    gender = models.CharField(max_length=135,blank=True,verbose_name=u"性别")
    candidate_remark = models.CharField(max_length=135,blank=True,verbose_name=u"候选人备注信息")
    # 1.2 学校学历信息
    training_school = models.CharField(max_length=135,blank=True,verbose_name=u"高中学校")
    bachelor_school = models.CharField(max_length=135,blank=True,verbose_name=u"大学学校")
    master_school = models.CharField(max_length=135, blank=True, verbose_name=u"研究生学校")
    doctor_school = models.CharField(max_length=135, blank=True, verbose_name=u"博士生学校")
    major = models.CharField(max_length=135,blank=True,verbose_name=u'专业')
    # 这个地方我们解析我们在jobs-models下定义的列表，然后进行列表下拉选择,用到了choices字段
    degree = models.CharField(max_length=135,choices=DEGREE_TYPE,blank=True,verbose_name=u'学历')
    # 1.3 综合能力测评成绩，笔试测试成绩  # max_digits：数字最大数 decimal_places：小数的最大位数
    test_score_of_general_ability = models.DecimalField(decimal_places=1,null=True,max_digits=3,blank=True,
                                                      verbose_name=u'综合能力测试成绩')
    paper_score = models.DecimalField(decimal_places=1,null=True,max_digits=3,blank=True,
                                    verbose_name=u'笔试成绩')
    # 1.4  第一轮面试记录
    first_score = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True, verbose_name=u'初试分',
                                      help_text=u'1-5分，极优秀: >=4.5，优秀: 4-4.4，良好: 3.5-3.9，一般: 3-3.4，较差: <3分')
    first_learning_ability = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
                                                 verbose_name=u'学习能力得分')
    first_professional_competency = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
                                                        verbose_name=u'专业能力得分')
    first_advantage = models.TextField(max_length=1024, blank=True, verbose_name=u'优势')
    first_disadvantage = models.TextField(max_length=1024, blank=True, verbose_name=u'顾虑和不足')
    # 获取列表下，然后进行选择
    first_result = models.CharField(max_length=256,choices=FIRST_INTERVIEW_RESULT_TYPE,blank=True,
                                    verbose_name="初试结果")
    first_recommend_position = models.CharField(max_length=135,blank=True,verbose_name="推荐部门")
    first_interviewer_user = models.ForeignKey(User, related_name='first_interviewer_user', blank=True, null=True,
                                               on_delete=models.CASCADE, verbose_name=u'面试官')
    first_remark = models.CharField(max_length=135, blank=True, verbose_name=u'初试备注')
    # 第二轮面试记录
    second_score = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True, verbose_name=u'专业复试得分',
                                       help_text=u'1-5分，极优秀: >=4.5，优秀: 4-4.4，良好: 3.5-3.9，一般: 3-3.4，较差: <3分')
    second_learning_ability = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
                                                  verbose_name=u'学习能力得分')
    second_professional_competency = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
                                                         verbose_name=u'专业能力得分')
    second_pursue_of_excellence = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
                                                      verbose_name=u'追求卓越得分')
    second_communication_ability = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
                                                       verbose_name=u'沟通能力得分')
    second_pressure_score = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
                                                verbose_name=u'抗压能力得分')
    second_advantage = models.TextField(max_length=1024, blank=True, verbose_name=u'优势')
    second_disadvantage = models.TextField(max_length=1024, blank=True, verbose_name=u'顾虑和不足')
    second_result = models.CharField(max_length=256, choices=INTERVIEW_RESULT_TYPE, blank=True, verbose_name=u'专业复试结果')
    second_recommend_position = models.CharField(max_length=256, blank=True, verbose_name=u'建议方向或推荐部门')
    second_interviewer_user = models.ForeignKey(User, related_name='second_interviewer_user', blank=True, null=True,
                                                on_delete=models.CASCADE, verbose_name=u'二面面试官')
    second_remark = models.CharField(max_length=135, blank=True, verbose_name=u'专业复试备注')

    # HR终面
    hr_score = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True, verbose_name=u'HR复试综合等级')
    hr_responsibility = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True, verbose_name=u'HR责任心')
    hr_communication_ability = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True,
                                                verbose_name=u'HR坦诚沟通')
    hr_logic_ability = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True, verbose_name=u'HR逻辑思维')
    hr_potential = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True, verbose_name=u'HR发展潜力')
    hr_stability = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True, verbose_name=u'HR稳定性')
    hr_advantage = models.TextField(max_length=1024, blank=True, verbose_name=u'优势')
    hr_disadvantage = models.TextField(max_length=1024, blank=True, verbose_name=u'顾虑和不足')
    hr_result = models.CharField(max_length=256, choices=INTERVIEW_RESULT_TYPE, blank=True, verbose_name=u'HR复试结果')
    hr_interviewer_user = models.ForeignKey(User, related_name='hr_interviewer_user', blank=True, null=True,
                                            on_delete=models.CASCADE, verbose_name=u'HR面试官')
    hr_remark = models.CharField(max_length=256, blank=True, verbose_name=u'HR复试备注')

    creator = models.CharField(max_length=256, blank=True, verbose_name=u'候选人数据的创建人')
    created_date = models.DateTimeField(auto_now_add=True, verbose_name=u'创建时间')
    modified_date = models.DateTimeField(auto_now=True, null=True, blank=True, verbose_name=u'更新时间')
    last_editor = models.CharField(max_length=256, blank=True, verbose_name=u'最后编辑者')
    class Meta:
        db_table = u'candidate' # 对应数据库表里的名字
        verbose_name = u'应聘管理'  # 对应表在页面上显示的名字
        verbose_name_plural = u'应聘管理' # 以复数形式
        permissions=(
            ('export',"Can export candidate list"),
            ('notify',"notify interviewer for candidate review")

        )
    def __str__(self):
        return self.username